package com.jyx.proj.mgr.stu;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


/**
 * 学生管理类：
 * 	-- 包含添加，修改，删除，查询学生信息的方法
 * author jyx
 * email jyxsuper@163.com
 * description: StuMgr
 * datetime: 2016年12月1日 下午4:10:06
 */
public class StuMgr {

	/** 控制台信息录入 */
	private Scanner input = new Scanner(System.in);
	/** 学生信息存储媒介：list:有序，可重复 */
	private List<Student> stuList = new ArrayList<Student>();
	

	/** 添加学生信息 */
	public void addInfo() {
		while(true){
			System.out.println("请输入学生学号:");
			String stuId = input.next();
			for (Student item : stuList) {
				if(item.getId().equalsIgnoreCase(stuId)){
					System.out.println("您输入的学号已存在，请重新输入！");
					break;
				}
			}
			System.out.println("请输入学生姓名：");
			String stuName = input.next();
			System.out.println("请输入学生性别(男/女)：");
			char gender = input.next().charAt(0);
			if(gender != '男' && gender != '女'){
				System.out.println("性别只能为男/女！");
				System.out.println("请重新输入学生信息！");
				continue;
			}
			Student stu = new Student(stuId,stuName,gender);
			stuList.add(stu);
			System.out.println("是否继续输入学生信息(y/n)：");
			char choose = input.next().charAt(0);
			if(choose == 'y'){
				continue;
			}
			break;
		}
		
		
		
	}
	
	/** 查询/删除学生信息 */
	public void showInfo(String opt){
		while(true){
			System.out.println("1.根据学号"+opt+"学生信息\t\t2.根据姓名"+opt+"学生信息\t\t3.根据性别"+opt+"学生信息\t\t0.返回主菜单");
			System.out.println("说明：如果您'N'或者'n'，默认返回主菜单，输入其他字符默认重新选择。");
			System.out.print("请选择：");
			String choose = input.next();
			if(choose.equals("4") || choose.equals("n") || choose.equals("N")){
				break;
			}
			switch (choose) {
				case "1" :// 根据学号查询学生信息
					optById(opt);
					break;
				case "2" :// 根据姓名查询学生信息
					optByName(opt);
					break;
				case "3" :// 根据性别查询学生信息
					optGender(opt);
					break;

				default :
					continue;
			}
		}
	}
	
	/** 根据学生性别查询/删除/修改学生信息 */
	public void optGender(String opt){
		boolean flag = false;
		Integer count = -1;
		while(true){
			System.out.println("请输入您要"+opt+"的学生的性别：");
			char gender = input.next().charAt(0);
			if(gender == ' '){
				System.out.println("您输入的性别是空的，无法查询。");
				return ;
			}
			if(opt.equals("查询")){
				for (Student item : stuList) {
					if(item.getGender() == gender){
						System.out.println("\t"+item.getId()+"\t\t"+item.getName()+"\t\t"+item.getGender());
						flag = true;
					}
				}
			}else if(opt.equals("删除")){
				for (Student item : stuList) {
					if(item.getGender() == gender){
						stuList.remove(item);
						flag = true;
					}
				}
			}else if(opt.equals("修改")){
				for (Student item : stuList) {
					if(item.getGender() == gender){
						count++;
						flag = true;
					}
				}
			}
			if(!flag){
				System.out.println("没有找到你要"+opt+"的学生的信息！");
				System.out.println("\t输入Y/y重新输入性别，输入N/n或其他返回上级菜单！");
				String choose = input.next();
				if(!choose.equals("y") && !choose.equals("Y")){
					break;
				}
			}
			System.out.println("是否继续输入学生性别查询学生信息(y/n)：");
			char choose = input.next().charAt(0);
			if(choose == 'y'){
				continue;
			}
			break;
		}
	}
	
	/**
	 * 根据姓名查询学生信息
	 */
	private void optByName(String opt) {
		boolean flag = false;
		while(true){
			System.out.println("请输入您要"+opt+"的学生的姓名：");
			String stuName = input.next();
			if(stuName.equals("")){
				System.out.println("您输入的姓名是空的，无法查询。");
				return ;
			}
			if(opt.equals("查询")){
				for (Student item : stuList) {
					if(item.getName().equals(stuName)){
						System.out.println("\t"+item.getId()+"\t\t"+item.getName()+"\t\t"+item.getGender());
						flag = true;
					}
				}
			}else if(opt.equals("删除")){
				for (Student item : stuList) {
					if(item.getName().equals(stuName)){
						stuList.remove(item);
						System.out.println("一条学霸信息被删除！");
						flag = true;
					}
				}
			}
			
			if(!flag){
				System.out.println("没有找到你要"+opt+"的学生的信息！");
				System.out.println("\t输入Y/y重新输入姓名，输入N/n或其他返回上级菜单！");
				String choose = input.next();
				if(!choose.equals("y") && !choose.equals("Y")){
					break;
				}
			}
			System.out.println("是否继续输入姓名查询学生信息(y/n)：");
			char choose = input.next().charAt(0);
			if(choose == 'y'){
				continue;
			}
			break;
		}
	}

	/**
	 * 通过ID查询学生的信息
	 */
	public void optById(String opt){
		boolean flag = false;
		while(true){
			System.out.println("请输入您要"+opt+"的学生的学号：");
			String stuNo = input.next();
			if(stuNo.equals("")){
				System.out.println("您输入的学号是空的，无法查询。");
				return ;
			}
			if(opt.equals("查询")){
//				System.out.println("******************学生信息******************");
//				System.out.println("\t学号\t\tx姓名\t\t性别");
				for (Student item : stuList) {
					if(item.getId().equals(stuNo)){
						System.out.println("\t"+item.getId()+"\t\t"+item.getName()+"\t\t"+item.getGender());
						flag = true;
					}
				}
			}else if(opt.equals("删除")){
				for (Student item : stuList) {
					if(item.getId().equals(stuNo)){
						stuList.remove(item);
						System.out.println("删除一条信息！");
						flag = true;
					}
				}
			}
			if(!flag){
				System.out.println("没有找到你要找的学生的信息！");
				System.out.println("\t输入Y/y重新输入学号，输入N/n或其他返回上级菜单！");
				String choose = input.next();
				if(!choose.equals("y") && !choose.equals("Y")){
					break;
				}
			}
			
			System.out.println("是否继续输入学生学号"+opt+"信息(y/n)：");
			char choose = input.next().charAt(0);
			if(choose == 'y'){
				continue;
			}
			break;
		}
	}

	/** 删除学生信息 */
	public void delInfo() {
		boolean flag = false;
		
	}
	
	
}
